package com.nenude.corejava.ch10;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class MapClass {

	public static void main(String[] args) {
		// Map集合用于保存有映射关系的数据
		// 存储数据是通过key value的对应关系进行保存
		// key是一个set集合，不能保存相同的key;保存key相同的数据，后面的数据会覆盖前面的数据（修改数据）
		// value 是一个collection集合；
		
		//HashMap允许value值为null,value可以重复;Hashtable不允许value值为null;key不能重复，value可以重复
		//HashMap允许key值为null,value可以重复;Hashtable不允许key值为null;key不能重复，value可以重复

		//HashMap 线程不安全
		// 可以指定长度30，不指定默认是16
		Map<String, Computer> map = new HashMap<String, Computer>(16);
		//Map<String, Computer> map = new Hashtable<String, Computer>(30);
		
		// 新增方法
		map.put("HP", new Computer("HP2018", 3000));
		map.put("HW", new Computer("HW2009", 3000));
		map.put("dell", new Computer("dell2020", 3000));
         map.put(null,new Computer("HW3000",7890));
		
		
		// 遍历map 一般先取出key，在遍历key,再根据key取value
		Set<String> keys = map.keySet();
		Iterator<String> iterator = keys.iterator();
		while (iterator.hasNext()) {
			
			String key = iterator.next();
			Computer computer = map.get(key);
			if (computer!=null) {
			System.out.println("  " + key + "  型号：" + computer.getBrand() + "  价格: "
					+ computer.getPrice());
			}
		}
		
		//一对多关系
		Map<String, List<Computer>> map2 = new HashMap<String, List<Computer>>();

		System.out.println("======================");
        //TreeMap		
		TreeMap<String, Computer> map3 =new TreeMap<String, Computer>();
		map3.put("HP", new Computer("HP2018", 3000));
		map3.put("HW", new Computer("HW2009", 3000));
		map3.put("dell", new Computer("dell2020", 3000));
		keys=map3.keySet();
		iterator=keys.iterator();
		while (iterator.hasNext()) {
		String key=iterator.next();
		Computer computer=map3.get(key);
		if (computer!=null) {
			System.out.println("品牌："+key+"   型号："+computer.getBrand()+"  价格："+computer.getPrice());
		}
			
		}
		
	}
}
